<template>
  <div class="container">
    <h1>文本生成</h1>
    
    <!-- 文本生成 -->
    <div class="card">
      <h2>智能文本生成</h2>
      <div class="form-group">
        <label for="prompt">输入提示:</label>
        <textarea id="prompt" v-model="prompt" placeholder="请输入文本生成提示..."></textarea>
      </div>
      <div class="form-group">
        <label for="max_tokens">最大生成长度:</label>
        <input id="max_tokens" type="number" v-model="maxTokens" min="1" max="1000" value="200">
      </div>
      <button @click="generateText">生成文本</button>
      <div v-if="generationResult" class="result">
        <h3>生成结果:</h3>
        <p>{{ generationResult }}</p>
      </div>
    </div>
    
    <!-- 导航链接 -->
    <div class="navigation">
      <h3>快速导航</h3>
      <router-link to="/">AI回答</router-link>
      <router-link to="/models">模型管理</router-link>
      <router-link to="/finetune">模型微调</router-link>
    </div>
  </div>
</template>

<script>
import { ref } from 'vue'

export default {
  name: 'TextGenerationView',
  setup() {
    const prompt = ref('')
    const maxTokens = ref(200)
    const generationResult = ref('')

    // 文本生成
    const generateText = async () => {
      if (!prompt.value.trim()) {
        alert('请输入提示文本')
        return
      }
      
      try {
        const response = await fetch('/api/v1/generate', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify({
            prompt: prompt.value,
            max_tokens: parseInt(maxTokens.value)
          })
        })
        if (!response.ok) {
          const errorData = await response.json()
          // 检查是否是因为模型未加载导致的失败
          if (errorData.detail && errorData.detail.includes('未加载')) {
            alert('模型未加载，请先前往"模型管理"页面加载模型')
          } else {
            alert(`文本生成失败: ${errorData.detail || '未知错误'}`)
          }
          return
        }
        const data = await response.json()
        generationResult.value = data.data.text
      } catch (error) {
        console.error('文本生成失败:', error)
        alert('文本生成失败: 可能是网络连接问题、模型未加载或后端服务异常')
      }
    }

    return {
      prompt,
      maxTokens,
      generationResult,
      generateText
    }
  }
}
</script>